﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using CodeCity.K8S.Service.Services;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

namespace CodeCity.K8S.Service
{
    public class Startup
    {
        private static string registry = Environment.GetEnvironmentVariable("REGISTRY") ?? "registry.cn-shanghai.aliyuncs.com";
        private static string deamonUrl = Environment.GetEnvironmentVariable("DEAMONURL") ?? "tcp://localhost:2375";
        private static string username = Environment.GetEnvironmentVariable("REGISTRY_USERNAME") ?? "1101385391@qq.com";
        private static string password = Environment.GetEnvironmentVariable("REGISTRY_PASSWORD") ?? "codecity123";
        private static string userNamespace = Environment.GetEnvironmentVariable("USER_NAMESPACE") ?? "codecity";
        public static string templateImage = Environment.GetEnvironmentVariable("TEMPLATE_IMAGE") ?? $"{registry}/codecity/nginx";
        public static string templateImageWithTag = Environment.GetEnvironmentVariable("TEMPLATE_IMAGE_WITHTAG") ?? $"{templateImage}:latest";
        private static string k8sConfigFile = Environment.GetEnvironmentVariable("K8SCONFIGFILE") ?? @"C:\Users\wzxin\.kube\config";
        private static string kubeContextName = Environment.GetEnvironmentVariable("KUBECONTEXTNAME") ?? @"docker-desktop";
        // This method gets called by the runtime. Use this method to add services to the container.
        // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddGrpc();
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseRouting();

            app.UseEndpoints(endpoints =>
            {

                endpoints.MapGrpcService<UserService>();

                endpoints.MapGet("/", async context =>
                {
                    await context.Response.WriteAsync("Communication with gRPC endpoints must be made through a gRPC client. To learn how to create a client, visit: https://go.microsoft.com/fwlink/?linkid=2086909");
                });
            });
        }
    }
}
